package cn.ondraw.ragflow.service;

import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.request.*;
import cn.ondraw.ragflow.pojo.response.CanvasResponse;
import org.springframework.stereotype.Service;

@Service
public interface RagFlowCanvasService {
    /**
     * 获取模板列表
     *
     * @return 模板列表响应
     */
    CanvasResponse templates();

    /**
     * 获取画布列表
     *
     * @return 画布列表响应
     */
    CanvasResponse canvasList();

    /**
     * 删除画布
     *
     * @param request 删除请求
     * @return 删除结果响应
     */
    CanvasResponse rm(CanvasRmRequest request);

    /**
     * 保存画布
     *
     * @param request 保存请求
     * @return 保存结果响应
     */
    CanvasResponse save(SetRequest request);

    /**
     * 获取画布信息
     *
     * @param canvasId 画布 ID
     * @return 画布信息响应
     */
    CanvasResponse get(String canvasId);

    /**
     * 获取 SSE 画布信息
     *
     * @param canvasId 画布 ID
     * @param token    认证令牌
     * @return SSE 画布信息响应
     */
    CanvasResponse getsse(String canvasId, String token);

    /**
     * 执行画布完成操作
     *
     * @param request 完成请求
     * @return 完成结果响应
     */
    CanvasResponse completion(CompletionRequest request);

    /**
     * 重置画布
     *
     * @param request 重置请求
     * @return 重置结果响应
     */
    CanvasResponse reset(ResetRequest request);

    /**
     * 获取输入元素
     *
     * @param request 输入元素请求
     * @return 输入元素响应
     */
    CanvasResponse inputElements(InputElementsRequest request);

    /**
     * 调试画布组件
     *
     * @param request 调试请求
     * @return 调试结果响应
     */
    CanvasResponse debug(DebugRequest request);

    /**
     * 测试数据库连接
     *
     * @param request 数据库连接测试请求
     * @return 测试结果响应
     */
    CanvasResponse testDbConnect(TestDbConnectRequest request);

    /**
     * 获取画布版本列表
     *
     * @param canvasId 画布 ID
     * @return 版本列表响应
     */
    CanvasResponse getlistversion(String canvasId);

    /**
     * 获取画布版本信息
     *
     * @param versionId 版本 ID
     * @return 版本信息响应
     */
    CanvasResponse getversion(String versionId);

    /**
     * 获取团队列表
     *
     * @param request 团队列表请求
     * @return 团队列表响应
     */
    CanvasResponse list_kbs(ListTeamRequest request);

    /**
     * 设置画布信息
     *
     * @param request 设置请求
     * @return 设置结果响应
     */
    CanvasResponse setting(SettingRequest request);
}
